Since the advent of personal computers that are networked together, distribution of software to multiple computer workstations has been a challenge. Before computers were networked, software was often physically installed, in person, by a computer administrator. As computers came to be connected via a network, software evolved to be delivered over a network.
As technology continued to evolve as the primary source of information for business users, the Internet was invented and became a primary source of moving information; it also became the delivery mechanism for installed software. This progress did not come without a cost. Viruses, which intentionally caused computers to malfunction, became common. In response to the troubles caused by these viruses, security on personal computers was tightened making it again more difficult to distribute software.
Since that time, there have been two major different methodologies developed for distributing applications that attempt to solve these problems: Hypertext Markup Language (“html”); and smart-client. The smart-client solutions, in both Microsoft .Net and Java protocols, work using a codebase that is securely installed on a client workstation using HyperText Transfer Protocol (“HTTP”) as the transport. Once installed, they commonly communicate with servers via HTTP to get the metadata about the application. They also use HTTP to obtain data or reports requested by the user.
Further, one of the tenets of software written to be used in a Software as a Service (“SaaS”) environment dictate that the software itself be extremely configurable via application metadata to specify properties used to configure the running application. In the SaaS software model, a SaaS provider writes an application where a single executing instance may be licensed to thousands of users for simultaneous usage from a central server. SaaS applications run the exact same program code but behave differently for each of the users of the software. The differences in behavior are caused by different property values being stored for each user. The property values are stored in a relational database on the server and user interface used by those business users is typically a web-based application. The relational database information for each customer are segregated in the relational databases either by storing each companies data in a separate database or by using a database table keying structure that segregates the data for each tenant within the same database. The relational database schemes for such SaaS applications are normally very complex in order to both provide the functionality and segregate the metadata driving the application by tenant.